package com.rockcent.mall.lib.dto;

import com.rockcent.common.domain.DtoEntity;
import com.rockcent.mall.lib.domain.enumclass.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 购买产品
 */
public class BuyProductDto extends DtoEntity {

    // 产品id
    private Long buyId;
    // 产品数量
    private Long buyCount;
    // 门店id,当配送方式为上门自提时,门店id不能为空
    private Long buyMerchantStoreId;
    // 卡券id
    private Long buyCouponId;
    // 用户分享码
    private String buyCustomerShareCode;
    // 产品渠道码
    private String buyChannelSalesCode;
    // 购买产品时选择配送方式
    private ProductShippingType buyShippingType;
    // 产品礼包的新售价
    private BigDecimal buyGiftPacketPrice;
    // 扩展字段 分销商产品id
    private Long buyDistributorProductId;

    //分销产品id
    private Long marketId;
    //分销产品 平台id 冗余查询
    private Long marketMallId;
    //分销产品 商家id 冗余查询
    private Long marketMerchantId;
    //分销产品 商家名称 冗余查询
    private String marketMerchantName;
    //名称
    private String name;
    //类型 ALL("全部"), GOODS("商品"), SERVICE("服务")
    private ProductType type;
    //原价
    private BigDecimal basePrice;
    //售价
    private BigDecimal sellPrice;
    //库存数量
    private Long quantity;
    //运费
    private BigDecimal carriage;
    //有效期开始时间
    private Date dateEnabled;
    //有效期结束时间
    private Date dateDisabled;
    //是否支持过期退
    private Boolean refundable;
    //产品编码
    private String barcode;
    //是否立即开售
    private Boolean sellnow;
    //开售时间
    private Date dateSelling;
    //限购数量
    private Long limitCount;
    //LOGO图
    private String logoUrl;
    //LOGO图 多张
    private String logoUrls;
    //卖点介绍
    private String note;
    //状态 SELLING("在售"), SUPPLIER_CANCEL_SOLDOUT("分销市场 供应商取消供货 已下架"),DISTRIBUTOR_CANCEL_SOLDOUT("分销市场 分销商取消代销 已下架"), SOLDOUT("已下架"), EXPIRED("已过期"), DELETED("已删除"), WAIT_APPLY("待申请"), WAIT_AUDIT("待审核"), AUDIT_PASS("审核通过"), AUDIT_FAIL("审核不通过")
    private ProductStatus status;
    //平台 id
    private Long mallId;
    //商家 id
    private Long merchantId;
    //产品所属商家名称
    private String merchantName;
    //服务费比率
    private String serveRate;
    //支持的物流类型 SHOP_PICKUP("到店自取"), SHIPPING("物流"), SHOP_PICKUP_AND_SHIPPING("物流和到店自取")
    private ProductShippingType shippingType;
    //分销佣金
    private BigDecimal resellFee;
    //分享返利
    private BigDecimal shareFee;
    //分销类型 IN_PLATFORM("平台内"), OUT_PLATFORM("平台外")
    private ProductMarketPlatformType marketPlatformType;
    //是否在分销市场展示
    private Boolean isRecommend;
    //产品推广二维码图片路径
    private String promoteUrl;
    //适用门店类型 ALL("所有门店"), PART("指定门店")
    private ProductMerchantStoreType productMerchantStoreType;
    //审核备注
    private String auditRemark;
    // 库存id
    private Long productQuantityId;
    //礼包分销产品佣金
    private BigDecimal packetResellFee;

    public Long getBuyId() {
        return buyId;
    }

    public void setBuyId(Long buyId) {
        this.buyId = buyId;
    }

    public Long getBuyCount() {
        return buyCount;
    }

    public void setBuyCount(Long buyCount) {
        this.buyCount = buyCount;
    }

    public Long getBuyMerchantStoreId() {
        return buyMerchantStoreId;
    }

    public void setBuyMerchantStoreId(Long buyMerchantStoreId) {
        this.buyMerchantStoreId = buyMerchantStoreId;
    }

    public Long getBuyCouponId() {
        return buyCouponId;
    }

    public void setBuyCouponId(Long buyCouponId) {
        this.buyCouponId = buyCouponId;
    }

    public String getBuyCustomerShareCode() {
        return buyCustomerShareCode;
    }

    public void setBuyCustomerShareCode(String buyCustomerShareCode) {
        this.buyCustomerShareCode = buyCustomerShareCode;
    }

    public String getBuyChannelSalesCode() {
        return buyChannelSalesCode;
    }

    public void setBuyChannelSalesCode(String buyChannelSalesCode) {
        this.buyChannelSalesCode = buyChannelSalesCode;
    }

    public ProductShippingType getBuyShippingType() {
        return buyShippingType;
    }

    public void setBuyShippingType(ProductShippingType buyShippingType) {
        this.buyShippingType = buyShippingType;
    }

    public BigDecimal getBuyGiftPacketPrice() {
        return buyGiftPacketPrice;
    }

    public void setBuyGiftPacketPrice(BigDecimal buyGiftPacketPrice) {
        this.buyGiftPacketPrice = buyGiftPacketPrice;
    }

    public Long getBuyDistributorProductId() {
        return buyDistributorProductId;
    }

    public void setBuyDistributorProductId(Long buyDistributorProductId) {
        this.buyDistributorProductId = buyDistributorProductId;
    }

    public Long getMarketId() {
        return marketId;
    }

    public void setMarketId(Long marketId) {
        this.marketId = marketId;
    }

    public Long getMarketMallId() {
        return marketMallId;
    }

    public void setMarketMallId(Long marketMallId) {
        this.marketMallId = marketMallId;
    }

    public Long getMarketMerchantId() {
        return marketMerchantId;
    }

    public void setMarketMerchantId(Long marketMerchantId) {
        this.marketMerchantId = marketMerchantId;
    }

    public String getMarketMerchantName() {
        return marketMerchantName;
    }

    public void setMarketMerchantName(String marketMerchantName) {
        this.marketMerchantName = marketMerchantName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ProductType getType() {
        return type;
    }

    public void setType(ProductType type) {
        this.type = type;
    }

    public BigDecimal getBasePrice() {
        return basePrice;
    }

    public void setBasePrice(BigDecimal basePrice) {
        this.basePrice = basePrice;
    }

    public BigDecimal getSellPrice() {
        return sellPrice;
    }

    public void setSellPrice(BigDecimal sellPrice) {
        this.sellPrice = sellPrice;
    }

    public Long getQuantity() {
        return quantity;
    }

    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }

    public BigDecimal getCarriage() {
        return carriage;
    }

    public void setCarriage(BigDecimal carriage) {
        this.carriage = carriage;
    }

    public Date getDateEnabled() {
        return dateEnabled;
    }

    public void setDateEnabled(Date dateEnabled) {
        this.dateEnabled = dateEnabled;
    }

    public Date getDateDisabled() {
        return dateDisabled;
    }

    public void setDateDisabled(Date dateDisabled) {
        this.dateDisabled = dateDisabled;
    }

    public Boolean getRefundable() {
        return refundable;
    }

    public void setRefundable(Boolean refundable) {
        this.refundable = refundable;
    }

    public String getBarcode() {
        return barcode;
    }

    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }

    public Boolean getSellnow() {
        return sellnow;
    }

    public void setSellnow(Boolean sellnow) {
        this.sellnow = sellnow;
    }

    public Date getDateSelling() {
        return dateSelling;
    }

    public void setDateSelling(Date dateSelling) {
        this.dateSelling = dateSelling;
    }

    public Long getLimitCount() {
        return limitCount;
    }

    public void setLimitCount(Long limitCount) {
        this.limitCount = limitCount;
    }

    public String getLogoUrl() {
        return logoUrl;
    }

    public void setLogoUrl(String logoUrl) {
        this.logoUrl = logoUrl;
    }

    public String getLogoUrls() {
        return logoUrls;
    }

    public void setLogoUrls(String logoUrls) {
        this.logoUrls = logoUrls;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public ProductStatus getStatus() {
        return status;
    }

    public void setStatus(ProductStatus status) {
        this.status = status;
    }

    public Long getMallId() {
        return mallId;
    }

    public void setMallId(Long mallId) {
        this.mallId = mallId;
    }

    public Long getMerchantId() {
        return merchantId;
    }

    public void setMerchantId(Long merchantId) {
        this.merchantId = merchantId;
    }

    public String getMerchantName() {
        return merchantName;
    }

    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }

    public String getServeRate() {
        return serveRate;
    }

    public void setServeRate(String serveRate) {
        this.serveRate = serveRate;
    }

    public ProductShippingType getShippingType() {
        return shippingType;
    }

    public void setShippingType(ProductShippingType shippingType) {
        this.shippingType = shippingType;
    }

    public BigDecimal getResellFee() {
        return resellFee;
    }

    public void setResellFee(BigDecimal resellFee) {
        this.resellFee = resellFee;
    }

    public BigDecimal getShareFee() {
        return shareFee;
    }

    public void setShareFee(BigDecimal shareFee) {
        this.shareFee = shareFee;
    }

    public ProductMarketPlatformType getMarketPlatformType() {
        return marketPlatformType;
    }

    public void setMarketPlatformType(ProductMarketPlatformType marketPlatformType) {
        this.marketPlatformType = marketPlatformType;
    }

    public Boolean getRecommend() {
        return isRecommend;
    }

    public void setRecommend(Boolean recommend) {
        isRecommend = recommend;
    }

    public String getPromoteUrl() {
        return promoteUrl;
    }

    public void setPromoteUrl(String promoteUrl) {
        this.promoteUrl = promoteUrl;
    }

    public ProductMerchantStoreType getProductMerchantStoreType() {
        return productMerchantStoreType;
    }

    public void setProductMerchantStoreType(ProductMerchantStoreType productMerchantStoreType) {
        this.productMerchantStoreType = productMerchantStoreType;
    }

    public String getAuditRemark() {
        return auditRemark;
    }

    public void setAuditRemark(String auditRemark) {
        this.auditRemark = auditRemark;
    }

    public Long getProductQuantityId() {
        return productQuantityId;
    }

    public void setProductQuantityId(Long productQuantityId) {
        this.productQuantityId = productQuantityId;
    }

    public BigDecimal getPacketResellFee() {
        return packetResellFee;
    }

    public void setPacketResellFee(BigDecimal packetResellFee) {
        this.packetResellFee = packetResellFee;
    }

    @Override
    public String toString() {
        return "BuyProductDto{" +
                "buyId=" + buyId +
                ", buyCount=" + buyCount +
                ", buyMerchantStoreId=" + buyMerchantStoreId +
                ", buyCouponId=" + buyCouponId +
                ", buyCustomerShareCode='" + buyCustomerShareCode + '\'' +
                ", buyChannelSalesCode='" + buyChannelSalesCode + '\'' +
                ", buyShippingType=" + buyShippingType +
                ", buyGiftPacketPrice=" + buyGiftPacketPrice +
                ", buyDistributorProductId=" + buyDistributorProductId +
                ", marketId=" + marketId +
                ", marketMallId=" + marketMallId +
                ", marketMerchantId=" + marketMerchantId +
                ", marketMerchantName='" + marketMerchantName + '\'' +
                ", name='" + name + '\'' +
                ", type=" + type +
                ", basePrice=" + basePrice +
                ", sellPrice=" + sellPrice +
                ", quantity=" + quantity +
                ", carriage=" + carriage +
                ", dateEnabled=" + dateEnabled +
                ", dateDisabled=" + dateDisabled +
                ", refundable=" + refundable +
                ", barcode='" + barcode + '\'' +
                ", sellnow=" + sellnow +
                ", dateSelling=" + dateSelling +
                ", limitCount=" + limitCount +
                ", logoUrl='" + logoUrl + '\'' +
                ", logoUrls='" + logoUrls + '\'' +
                ", note='" + note + '\'' +
                ", status=" + status +
                ", mallId=" + mallId +
                ", merchantId=" + merchantId +
                ", merchantName='" + merchantName + '\'' +
                ", serveRate='" + serveRate + '\'' +
                ", shippingType=" + shippingType +
                ", resellFee=" + resellFee +
                ", shareFee=" + shareFee +
                ", marketPlatformType=" + marketPlatformType +
                ", isRecommend=" + isRecommend +
                ", promoteUrl='" + promoteUrl + '\'' +
                ", productMerchantStoreType=" + productMerchantStoreType +
                ", auditRemark='" + auditRemark + '\'' +
                ", productQuantityId=" + productQuantityId +
                ", packetResellFee=" + packetResellFee +
                '}';
    }
}